Image Texture
iOS GL texture backed by tightly-packed RGBA8 bytes from ImageDecoder. The pixel format is fixed to RGBA8 (premultiplied) — same as Android and JS — so the standard texImage2D(ByteArray) overload can upload directly without extra format conversion.
Lifecycle: holds a strong reference to rgbaBytes until the first allocTexImage call, then drops it so the CPU copy can be GC'd while the GPU keeps the texture.